package com.springbootweb.config;

import com.springbootweb.component.LoginHandlerInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
 * @Author 你咋那么帅
 * @Date 2020/1/15
 */
@Configuration//用这个注解声明该类为配置类
public class MyMvcConfig extends WebMvcConfigurationSupport {
    //重写webMvcConfigurationSupport类的addViewControllers方法
    //注意这个方法只能重写一次,重写多次只会执行上面的这个（刚开始就写了俩，下面那个不能用..）
    //视图控制
    //这些方法都会在springboot项目启动的时候自动调用
    public void addViewControllers(ViewControllerRegistry registry){
        //当浏览器输入路径为/view时跳转到templates文件夹下的hello.html页面
        //这个是浏览器中映射的路径，和所要跳转到的后台路径
        //当然用前面的RequestMapping加上方法return的字符串也可以解决这个问题，但是这种方式用起来更简单
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/index.html").setViewName("login");
        registry.addViewController("/dashboard.html").setViewName("dashboard");
    }

    //配置需要拦截的页面以及需要放行（不拦截）的资源路径
    public void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(new LoginHandlerInterceptor()).
                addPathPatterns("/**").excludePathPatterns("/","/index.html","/login","/asserts/**");
    }

    public void addResourceHandlers(ResourceHandlerRegistry registry){
        ////第一个方法设置访问路径前缀，第二个方法设置资源路径
        registry.addResourceHandler("/asserts/**").addResourceLocations("classpath:/static/asserts/");
    }

}
